#ifndef _APP_H
#define _APP_H

#include <vector>
#include <SFML/graphics.hpp>
#include "image_manager.h"
#include "sprite_manager.h"

// class prototypes for class Imagemanager and SpriteManager
class ImageManager;
class SpriteManager;

// class SpriteManager
//   - This class manages sprites for SFML.
//   - Sprites are stored in a static vector.
//	 - The first item of the sprites vector is a placeholder in case of errors
class App
{
public:
	// SFML window
	//  - Where all display related things occur
	static sf::RenderWindow window;
	
	// SFML event handler
	//  - Contians and handle all evens
	static sf::Event event;
	
	// ImageManager
	//  - Stores all images
	//  - Handles all image related functions
	static ImageManager image_manager;
	
	// SpriteManager
	//  - Stores all sprites
	//    - These sprites use images
	//  - Handles all sprite related functions
	static SpriteManager sprite_manager;
	
	// Elapsed Time
	static float elapsed_time;
	
	App();
	~App();
	
	// static bool init()
	//  - This function initializes sf::RenderWindow window
	static bool init();
};

#endif